package pe.gob.mininter.dirandro.vaadin.panel.parte;

import java.text.MessageFormat;
import java.util.List;

import org.apache.log4j.Logger;

import pe.gob.mininter.dirandro.model.Arma;
import pe.gob.mininter.dirandro.model.DetPerArmExp;
import pe.gob.mininter.dirandro.model.Empresa;
import pe.gob.mininter.dirandro.model.Expediente;
import pe.gob.mininter.dirandro.model.ModeloMarca;
import pe.gob.mininter.dirandro.model.Persona;
import pe.gob.mininter.dirandro.model.Valor;
import pe.gob.mininter.dirandro.service.ArmaService;
import pe.gob.mininter.dirandro.service.EmpresaService;
import pe.gob.mininter.dirandro.service.ExpedienteArmaService;
import pe.gob.mininter.dirandro.service.ModeloMarcaService;
import pe.gob.mininter.dirandro.service.PersonaService;
import pe.gob.mininter.dirandro.util.BeanValidar;
import pe.gob.mininter.dirandro.util.Constante;
import pe.gob.mininter.dirandro.util.HarecUtil;
import pe.gob.mininter.dirandro.vaadin.dialogs.AlertDialog;
import pe.gob.mininter.dirandro.vaadin.panel.util.PanelAgregarArmas;
import pe.gob.mininter.dirandro.vaadin.util.ComboBoxLOVS;
import pe.gob.mininter.dirandro.vaadin.util.Injector;

import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.OptionGroup;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

public class PanelRegistroParteArma extends CustomComponent implements ClickListener {

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
	
	@AutoGenerated
	private VerticalLayout mainLayout;
	@AutoGenerated
	private VerticalLayout pnlArmas;
	@AutoGenerated
	private VerticalLayout pnlArmasBody;
	@AutoGenerated
	private Table tblArmLista;
	@AutoGenerated
	private HorizontalLayout pnlArmasBody6;
	@AutoGenerated
	private Button btnRegistrar;
	@AutoGenerated
	private HorizontalLayout pnlArmasBody5;
	@AutoGenerated
	private TextField txtArmObservacion;
	@AutoGenerated
	private HorizontalLayout pnlArmasBody4_1;
	@AutoGenerated
	private ComboBoxLOVS cmbArmEstado;
	@AutoGenerated
	private ComboBoxLOVS cmbArmSituacion;
	@AutoGenerated
	private TextField txtArmCantidad;
	@AutoGenerated
	private TextField txtNroLicencia;
	@AutoGenerated
	private HorizontalLayout pnlArmasBody3;
	@AutoGenerated
	private ComboBox cmbArmPersonaIncautada;
	@AutoGenerated
	private OptionGroup rbTipoPropietario;
	@AutoGenerated
	private ComboBox cmbDuenio;
	@AutoGenerated
	private HorizontalLayout lytDatos;
	@AutoGenerated
	private Label lblDatosArma;
	@AutoGenerated
	private HorizontalLayout pnlArmasBody1;
	@AutoGenerated
	private Button btnAgregar;
	@AutoGenerated
	private ComboBox cmbArmaSerie;
	/**
	 * The constructor should first build the main layout, set the
	 * composition root and then do any custom initialization.
	 *
	 * The constructor will not be automatically regenerated by the
	 * visual editor.
	 */

	private static final long serialVersionUID = -4639683924066371051L;

	private static final String OPCION_PERSONA = "Persona";
	private static final String OPCION_EMPRESA = "Empresa";
	
	private PanelAgregarArmas pnlAgregarArmas;
	
	private PersonaService personaService;
	private EmpresaService empresaService;
	private ArmaService armaService;
	private ModeloMarcaService modeloMarcaService;
	private ExpedienteArmaService expedienteArmaService;
	
	private List<Empresa> lstEmpresas;
	private List<Persona> lstPersonas;
	private List<Persona> lstPropietarioPersona;
	private List<Arma> lstArmas;
	private String listaSeleccionada=OPCION_PERSONA;
	
	private Expediente expediente;
	private DetPerArmExp expedienteArma;
	private boolean inicializado=false;
	private static final Logger logger= Logger.getLogger(PanelRegistroParteArma.class);
	
	public PanelRegistroParteArma(  ) {
		buildMainLayout();
		personaService = Injector.obtenerServicio(PersonaService.class);
		empresaService = Injector.obtenerServicio(EmpresaService.class);
		armaService = Injector.obtenerServicio(ArmaService.class);
		expedienteArmaService = Injector.obtenerServicio(ExpedienteArmaService.class);
		modeloMarcaService = Injector.obtenerServicio(ModeloMarcaService.class);
		setCompositionRoot(mainLayout);
		postConstruct();
	}
	
	public void setExpediente(Expediente expediente) {
		this.expediente = expediente;
		postConstruct();
	}

	public void postConstruct() {
		if(expediente!=null && !expediente.esNuevo() && !inicializado){
			logger.debug("inicialziando");
			lstArmas = armaService.buscar(null);
			lstPropietarioPersona = personaService.buscar(null);
			
			limpiarArma();
			cmbArmEstado.setInputPrompt("Estado");
			cmbArmSituacion.setInputPrompt("Situacion");
			
			cmbArmEstado.setRequired(true);
			cmbArmSituacion.setRequired(true);
			
			cmbArmEstado.setCodigoLista(Constante.LISTA.CODIGO.ESTADO);
			cmbArmSituacion.setCodigoLista(Constante.LISTA.CODIGO.SITUACION_GENERAL);
			
			cmbArmEstado.attach();
			cmbArmSituacion.attach();
			
			cmbArmaSerie.setInputPrompt("Seleccionar Arma por Nro. de Serie");
			cmbArmaSerie.setItemCaptionPropertyId("nroSerie");
			cmbArmaSerie.setImmediate(true);
			cmbArmaSerie.setContainerDataSource(new BeanItemContainer<Arma>(Arma.class,  lstArmas));
			cmbArmaSerie.addListener(new ValueChangeListener() {
				private static final long serialVersionUID = 2720977948538256976L;
	
				@Override
				public void valueChange(ValueChangeEvent event) {
					cmbArmasValueChange(event);
				}
	
			});
			
			rbTipoPropietario.addItem(OPCION_PERSONA);
			rbTipoPropietario.addItem(OPCION_EMPRESA);
			rbTipoPropietario.select(OPCION_PERSONA);
			rbTipoPropietario.setImmediate(true);
			rbTipoPropietario.addListener(new ValueChangeListener() {
				private static final long serialVersionUID = 2720977948538256976L;
				@Override
				public void valueChange(ValueChangeEvent event) {
					rbTipoPersonaValueChange(event);
				}
			});
			
			cmbArmPersonaIncautada.setInputPrompt("Incautado a:");
			cmbArmPersonaIncautada.setItemCaptionPropertyId("nombreCompleto");
			cmbArmPersonaIncautada.setImmediate(true);
			cargaComboPersonaIncautada(OPCION_PERSONA);
					
			cmbDuenio.setInputPrompt("Perteneciente a:");
			cmbDuenio.setItemCaptionPropertyId("nombreCompleto");
			cmbDuenio.setContainerDataSource(new BeanItemContainer<Persona>(Persona.class,  lstPropietarioPersona));
			
			tblArmLista.setSelectable(true);
			tblArmLista.setImmediate(true);
			tblArmLista.setNullSelectionAllowed(true);
			tblArmLista.setNullSelectionItemId(null);
			tblArmLista.addListener(new ValueChangeListener() {
				
				private static final long serialVersionUID = 7962790507398071986L;
	
				@Override
				public void valueChange(ValueChangeEvent event) {
					boolean esModoNuevo = tblArmLista.getValue() == null;
					limpiar();
					if(esModoNuevo){
						tblArmLista.setValue(null);
						habilitarEdicion(false);
					}else{
						habilitarEdicion(true);
						Item item = tblArmLista.getItem(tblArmLista.getValue());
					
						expedienteArma.setId((Long) item.getItemProperty("id").getValue());					
						txtArmObservacion.setValue(item.getItemProperty("observacion").getValue());
						txtArmCantidad.setValue(item.getItemProperty("cantidad").getValue());
						txtNroLicencia.setValue(item.getItemProperty("numerolicencia").getValue());
						cmbArmaSerie.select((Arma)item.getItemProperty("arma").getValue());
						cmbDuenio.select(new Persona((Long)item.getItemProperty("propietario.id").getValue()));
						cmbArmEstado.select(new Valor((Long)item.getItemProperty("estado.id").getValue()));
						cmbArmSituacion.select(new Valor((Long)item.getItemProperty("situacion.id").getValue()));
						
						if(item.getItemProperty("persona.id").getValue()!=null){
							listaSeleccionada=OPCION_PERSONA;
							rbTipoPropietario.select(OPCION_PERSONA);
							cmbArmPersonaIncautada.select(new Persona((Long)item.getItemProperty("persona.id").getValue()));
						}else{
							listaSeleccionada=OPCION_EMPRESA;
							rbTipoPropietario.select(OPCION_EMPRESA);
							if(lstEmpresas==null){
								lstEmpresas = empresaService.listarEmpresas();
							}
							cmbArmPersonaIncautada.select(new Empresa((Long)item.getItemProperty("empresa.id").getValue()));
						}
					}
				}
			});	
			
			btnRegistrar.addListener((ClickListener)this);
			btnAgregar.addListener((ClickListener)this);
			refrescar();
			inicializado = true;
		}
	}

	private void rbTipoPersonaValueChange(ValueChangeEvent event){		
		boolean opcion = event.getProperty().getValue().equals(OPCION_PERSONA);
		cmbArmPersonaIncautada.select(null);
		if(opcion){
			cargaComboPersonaIncautada(OPCION_PERSONA);
		}else{
			cargaComboPersonaIncautada(OPCION_EMPRESA);
		}
	}
	
	private void cargaComboPersonaIncautada(String opcion){
		if(opcion.equals(OPCION_PERSONA)){
			listaSeleccionada=OPCION_PERSONA;
			if(lstPersonas ==null)
				lstPersonas = personaService.buscar( null );
			cmbArmPersonaIncautada.setItemCaptionPropertyId("nombreCompleto");
			cmbArmPersonaIncautada.setContainerDataSource(new BeanItemContainer<Persona>(Persona.class,  lstPersonas));
		}else{
			listaSeleccionada=OPCION_EMPRESA;
			cmbArmPersonaIncautada.setItemCaptionPropertyId("razonSocial");
			if(lstEmpresas==null)
				lstEmpresas = empresaService.buscar( null );
			cmbArmPersonaIncautada.setContainerDataSource(new BeanItemContainer<Empresa>(Empresa.class,  lstEmpresas));
		}
	}
	
	private void cmbArmasValueChange(ValueChangeEvent event) {
		limpiarArma();
		if (event.getProperty().getValue() != null) {
			imprmirArma((Arma) event.getProperty().getValue());
		}
	}
	
	private void imprmirArma(Arma arma) {
		String plantilla = "<p><b>Tipo:</b> {0} <b>Marca:</b> {1} <b>Modelo:</b> {2}</p>";

		lytDatos.setVisible(true);
		ModeloMarca tipo = null;
		tipo = modeloMarcaService.obtener(arma.getModelo().getPadre().getId()).getPadre();
		String html = MessageFormat.format(plantilla, 
				tipo.getNombre(), // 0
				arma.getModelo().getPadre().getNombre(), // 1
				arma.getModelo().getNombre() // 2 
				);

		lytDatos.setVisible(true);
		lblDatosArma.setVisible(true);
		lblDatosArma.setValue(html);
	}

	private void limpiarArma() {
		lytDatos.setVisible(false);
		lblDatosArma.setVisible(false);
		lblDatosArma.setValue("");
	}
	
	private void cargarTabla( ){
		IndexedContainer container = new IndexedContainer();
		container.addContainerProperty("id", Long.class,  null);
		container.addContainerProperty("propietario.id", Long.class, null);
		container.addContainerProperty("propietario.nombre", String.class, null);
		container.addContainerProperty("persona.id", Long.class, null);
		container.addContainerProperty("persona.nombre", String.class, null);
		container.addContainerProperty("empresa.id", Long.class, null);
		container.addContainerProperty("empresa.nombre", String.class, null);
		container.addContainerProperty("situacion.id", Long.class, null);
		container.addContainerProperty("situacion.nombre", String.class, null);
		container.addContainerProperty("estado.id", Long.class, null);
		container.addContainerProperty("estado.nombre", String.class, null);
		container.addContainerProperty("cantidad", String.class, null);
		container.addContainerProperty("numerolicencia", String.class, null);
		container.addContainerProperty("observacion", String.class, null);
		
		container.addContainerProperty("arma", Arma.class, null);
		container.addContainerProperty("arma.id", Long.class, null);
		//container.addContainerProperty("tipo.nombre", String.class, null);
		container.addContainerProperty("marca.nombre", String.class, null);
		container.addContainerProperty("modelo.nombre", String.class, null);
		
		tblArmLista.setContainerDataSource(container);
		tblArmLista.setVisibleColumns(new Object[]{"propietario.nombre", "persona.nombre", "empresa.nombre","marca.nombre","modelo.nombre"});

		tblArmLista.setColumnHeader("propietario.nombre", "Propietario");
		tblArmLista.setColumnHeader("persona.nombre", "Persona");
		tblArmLista.setColumnHeader("empresa.nombre", "Empresa");
		/*tblArmLista.setColumnHeader("tipo.nombre", "Tipo");*/
		tblArmLista.setColumnHeader("marca.nombre", "Marca");
		tblArmLista.setColumnHeader("modelo.nombre", "Modelo");
		
		DetPerArmExp munin = new DetPerArmExp();
		munin.setExpediente(expediente);
		List<DetPerArmExp> lstArmas = expedienteArmaService.buscar(munin);
		int con=1;
		for (DetPerArmExp detarma : lstArmas){
			Item item = container.addItem(con++);
			item.getItemProperty("id").setValue(detarma.getId());
			item.getItemProperty("persona.id").setValue(detarma.getPersonaImplicada()!=null?HarecUtil.nullToEmpty(detarma.getPersonaImplicada().getId()):null);
			item.getItemProperty("persona.nombre").setValue(detarma.getPersonaImplicada()!=null?HarecUtil.nullToEmpty(detarma.getPersonaImplicada().getNombreCompleto()):null);
			item.getItemProperty("empresa.id").setValue(detarma.getEmpresaImplicada()!=null?HarecUtil.nullToEmpty(detarma.getEmpresaImplicada().getId()):null);
			item.getItemProperty("empresa.nombre").setValue(detarma.getEmpresaImplicada()!=null?HarecUtil.nullToEmpty(detarma.getEmpresaImplicada().getRazonSocial()):null);
			item.getItemProperty("propietario.id").setValue(detarma.getPropietario()!=null?HarecUtil.nullToEmpty(detarma.getPropietario().getId()):null);
			item.getItemProperty("propietario.nombre").setValue(detarma.getPropietario()!=null?HarecUtil.nullToEmpty(detarma.getPropietario().getNombreCompleto()):null);
			item.getItemProperty("situacion.id").setValue(HarecUtil.valorIdToEmpty(detarma.getSituacion()));
			item.getItemProperty("situacion.nombre").setValue(HarecUtil.valorNombreToEmpty(detarma.getSituacion()));
			item.getItemProperty("estado.id").setValue(HarecUtil.valorIdToEmpty(detarma.getEstado()));
			item.getItemProperty("estado.nombre").setValue(HarecUtil.valorNombreToEmpty(detarma.getEstado()));
			item.getItemProperty("cantidad").setValue(HarecUtil.nullToEmpty(detarma.getCantidadMunicion()));
			item.getItemProperty("observacion").setValue(HarecUtil.nullToEmpty(detarma.getObservacion()));
			item.getItemProperty("numerolicencia").setValue(HarecUtil.nullToEmpty(detarma.getNroLicencia()));
			if(detarma.getArma()!=null){
				item.getItemProperty("arma").setValue(detarma.getArma());
				item.getItemProperty("arma.id").setValue(detarma.getArma().getId());
				
				item.getItemProperty("modelo.nombre").setValue(detarma.getArma().getModelo()!=null?HarecUtil.nullToEmpty(detarma.getArma().getModelo().getNombre()):null);
				item.getItemProperty("marca.nombre").setValue(detarma.getArma().getModelo().getPadre()!=null?HarecUtil.nullToEmpty(detarma.getArma().getModelo().getPadre().getNombre()):null);
				//item.getItemProperty("tipo.nombre").setValue(municion.getMarca().getPadre()!=null?HarecUtil.nullToEmpty(municion.getMarca().getPadre().getNombre()):null);
			}
			
		}
	}
	
	public void refrescar(){
		habilitarEdicion(false);
		limpiar();
		cargarTabla();
	}
	
	private void habilitarEdicion(boolean flag){
		if(flag){
			btnRegistrar.setCaption("Actualizar");
		}else{
			btnRegistrar.setCaption("Crear");
		}
	}
	
	public void limpiar(){
		expedienteArma = new DetPerArmExp(0l);
		expedienteArma.setExpediente(expediente);
		txtNroLicencia.setValue("");
		txtArmCantidad.setValue("");
		txtArmObservacion.setValue("");
		cmbArmEstado.select(null);
		cmbArmPersonaIncautada.select(null);
		cmbArmaSerie.select(null);
		cmbArmSituacion.select(null);
		cmbDuenio.select(null); 
		rbTipoPropietario.select(OPCION_PERSONA);
		cargaComboPersonaIncautada(OPCION_PERSONA);
	}
	
	public void actualizarArmas(Arma arma){
		lstArmas = armaService.buscar(null);
		cmbArmaSerie.setContainerDataSource(new BeanItemContainer<Arma>(Arma.class,  lstArmas));
		if(arma!=null){
			cmbArmaSerie.select(arma);
		}
	}

	@Override
	public void buttonClick(ClickEvent event) {
		
		if(	event.getButton().equals(btnAgregar)  ){
			pnlAgregarArmas = new PanelAgregarArmas( );
			pnlAgregarArmas.setPadre(this);
			if(this.getParent().getParent()!=null){
				pnlAgregarArmas.setParent(this.getParent().getParent());//cambio 1
			}else{
				pnlAgregarArmas.setParent(this.getParent());//cambio 1	
			}
			
			Window window=new Window(){
				
				private static final long serialVersionUID = 1L;

				  protected void close() {
					  getApplication().getMainWindow().removeWindow(getWindow());
				  }};
			window.setCaption("Registrar Arma");
			window.addComponent(pnlAgregarArmas);
			window.setModal(true);
			window.setResizable(false);
			window.setWidth("550px");
			window.setHeight("-1px");
			getApplication().getMainWindow().addWindow(window);//cambio 2
			
			return;
		}
		
		if(	event.getButton().equals(btnRegistrar)  ){
			
			expedienteArma.setArma((Arma)cmbArmaSerie.getValue());
			expedienteArma.setExpediente(expediente);
			expedienteArma.setCantidadMunicion(HarecUtil.toBigDecimal(txtArmCantidad.getValue()));
			expedienteArma.setPropietario((Persona)cmbDuenio.getValue());
			
			if(listaSeleccionada.equals(OPCION_PERSONA))
				expedienteArma.setPersonaImplicada((Persona)cmbArmPersonaIncautada.getValue());
			else
				expedienteArma.setEmpresaImplicada((Empresa)cmbArmPersonaIncautada.getValue());
			
			expedienteArma.setEstado((Valor)cmbArmEstado.getValue());
			expedienteArma.setSituacion((Valor)cmbArmSituacion.getValue());
			expedienteArma.setObservacion(HarecUtil.nullToEmpty(txtArmObservacion.getValue()));
			expedienteArma.setNroLicencia(HarecUtil.nullToEmpty(txtNroLicencia.getValue()));
			
			HarecUtil.validar(getWindow(), expedienteArma, new BeanValidar[]{
	        	new BeanValidar("arma", new Object[]{"Arma"}, cmbArmaSerie),
	        	new BeanValidar("situacion", new Object[]{"Situación"}, cmbArmSituacion),
	        	new BeanValidar("estado", new Object[]{"Estado del arma"}, cmbArmEstado)
	        });
	        
			if(expedienteArma.esNuevo())
				expedienteArmaService.crear(expedienteArma);
			else
				expedienteArmaService.actualizar(expedienteArma);
			
			AlertDialog alertDialog = new  AlertDialog("Registro de Armas", "Se ha registrado el arma correctamente", "Aceptar", "400");
			getApplication().getMainWindow().addWindow(alertDialog);
			refrescar();
			
			return;
		}
	}

	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("100%");
		mainLayout.setHeight("-1px");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("100.0%");
		setHeight("-1px");
		
		// pnlArmas
		pnlArmas = buildPnlArmas();
		mainLayout.addComponent(pnlArmas);
		
		return mainLayout;
	}

	@AutoGenerated
	private VerticalLayout buildPnlArmas() {
		// common part: create layout
		pnlArmas = new VerticalLayout();
		pnlArmas.setImmediate(false);
		pnlArmas.setWidth("-1px");
		pnlArmas.setHeight("632px");
		pnlArmas.setMargin(false);
		
		// pnlArmasBody
		pnlArmasBody = buildPnlArmasBody();
		pnlArmas.addComponent(pnlArmasBody);
		pnlArmas.setComponentAlignment(pnlArmasBody, new Alignment(20));
		
		return pnlArmas;
	}

	@AutoGenerated
	private VerticalLayout buildPnlArmasBody() {
		// common part: create layout
		pnlArmasBody = new VerticalLayout();
		pnlArmasBody.setImmediate(false);
		pnlArmasBody.setWidth("-1px");
		pnlArmasBody.setHeight("-1px");
		pnlArmasBody.setMargin(true);
		pnlArmasBody.setSpacing(true);
		
		// pnlArmasBody1
		pnlArmasBody1 = buildPnlArmasBody1();
		pnlArmasBody.addComponent(pnlArmasBody1);
		
		// lytDatos
		lytDatos = buildLytDatos();
		pnlArmasBody.addComponent(lytDatos);
		
		// pnlArmasBody3
		pnlArmasBody3 = buildPnlArmasBody3();
		pnlArmasBody.addComponent(pnlArmasBody3);
		
		// pnlArmasBody4_1
		pnlArmasBody4_1 = buildPnlArmasBody4_1();
		pnlArmasBody.addComponent(pnlArmasBody4_1);
		
		// pnlArmasBody5
		pnlArmasBody5 = buildPnlArmasBody5();
		pnlArmasBody.addComponent(pnlArmasBody5);
		
		// pnlArmasBody6
		pnlArmasBody6 = buildPnlArmasBody6();
		pnlArmasBody.addComponent(pnlArmasBody6);
		
		// tblArmLista
		tblArmLista = new Table();
		tblArmLista.setImmediate(false);
		tblArmLista.setWidth("900px");
		tblArmLista.setHeight("-1px");
		pnlArmasBody.addComponent(tblArmLista);
		pnlArmasBody.setComponentAlignment(tblArmLista, new Alignment(20));
		
		return pnlArmasBody;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlArmasBody1() {
		// common part: create layout
		pnlArmasBody1 = new HorizontalLayout();
		pnlArmasBody1.setImmediate(false);
		pnlArmasBody1.setWidth("-1px");
		pnlArmasBody1.setHeight("-1px");
		pnlArmasBody1.setMargin(false);
		pnlArmasBody1.setSpacing(true);
		
		// cmbArmaSerie
		cmbArmaSerie = new ComboBox();
		cmbArmaSerie.setCaption("Número de Serie");
		cmbArmaSerie.setImmediate(false);
		cmbArmaSerie.setWidth("250px");
		cmbArmaSerie.setHeight("-1px");
		cmbArmaSerie.setRequired(true);
		pnlArmasBody1.addComponent(cmbArmaSerie);
		
		// btnAgregar
		btnAgregar = new Button();
		btnAgregar.setCaption("Agregar");
		btnAgregar.setImmediate(true);
		btnAgregar.setWidth("-1px");
		btnAgregar.setHeight("-1px");
		pnlArmasBody1.addComponent(btnAgregar);
		pnlArmasBody1.setComponentAlignment(btnAgregar, new Alignment(9));
		
		return pnlArmasBody1;
	}

	@AutoGenerated
	private HorizontalLayout buildLytDatos() {
		// common part: create layout
		lytDatos = new HorizontalLayout();
		lytDatos.setImmediate(false);
		lytDatos.setWidth("-1px");
		lytDatos.setHeight("-1px");
		lytDatos.setMargin(false);
		
		// lblDatosArma
		lblDatosArma = new Label();
		lblDatosArma.setImmediate(false);
		lblDatosArma.setWidth("-1px");
		lblDatosArma.setHeight("-1px");
		lblDatosArma.setValue("Label");
		lblDatosArma.setContentMode(3);
		lytDatos.addComponent(lblDatosArma);
		
		return lytDatos;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlArmasBody3() {
		// common part: create layout
		pnlArmasBody3 = new HorizontalLayout();
		pnlArmasBody3.setImmediate(false);
		pnlArmasBody3.setWidth("-1px");
		pnlArmasBody3.setHeight("-1px");
		pnlArmasBody3.setMargin(false);
		pnlArmasBody3.setSpacing(true);
		
		// cmbDuenio
		cmbDuenio = new ComboBox();
		cmbDuenio.setCaption("Propietario");
		cmbDuenio.setImmediate(false);
		cmbDuenio.setWidth("202px");
		cmbDuenio.setHeight("-1px");
		pnlArmasBody3.addComponent(cmbDuenio);
		
		// rbTipoPropietario
		rbTipoPropietario = new OptionGroup();
		rbTipoPropietario.setStyleName("horizontal");
		rbTipoPropietario.setCaption("Tipo Propietario");
		rbTipoPropietario.setImmediate(false);
		rbTipoPropietario.setWidth("-1px");
		rbTipoPropietario.setHeight("25px");
		pnlArmasBody3.addComponent(rbTipoPropietario);
		
		// cmbArmPersonaIncautada
		cmbArmPersonaIncautada = new ComboBox();
		cmbArmPersonaIncautada.setCaption("Persona Incautada");
		cmbArmPersonaIncautada.setImmediate(false);
		cmbArmPersonaIncautada.setWidth("300px");
		cmbArmPersonaIncautada.setHeight("-1px");
		pnlArmasBody3.addComponent(cmbArmPersonaIncautada);
		
		return pnlArmasBody3;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlArmasBody4_1() {
		// common part: create layout
		pnlArmasBody4_1 = new HorizontalLayout();
		pnlArmasBody4_1.setImmediate(false);
		pnlArmasBody4_1.setWidth("-1px");
		pnlArmasBody4_1.setHeight("-1px");
		pnlArmasBody4_1.setMargin(false);
		pnlArmasBody4_1.setSpacing(true);
		
		// txtNroLicencia
		txtNroLicencia = new TextField();
		txtNroLicencia.setCaption("Número de Licencia");
		txtNroLicencia.setImmediate(false);
		txtNroLicencia.setWidth("-1px");
		txtNroLicencia.setHeight("-1px");
		txtNroLicencia.setInputPrompt("Número de Licencia");
		txtNroLicencia.setMaxLength(50);
		pnlArmasBody4_1.addComponent(txtNroLicencia);
		
		// txtArmCantidad
		txtArmCantidad = new TextField();
		txtArmCantidad.setCaption("Cantidad Munición");
		txtArmCantidad.setImmediate(false);
		txtArmCantidad.setWidth("-1px");
		txtArmCantidad.setHeight("-1px");
		txtArmCantidad.setInputPrompt("Cantidad Munición");
		pnlArmasBody4_1.addComponent(txtArmCantidad);
		
		// cmbArmSituacion
		cmbArmSituacion = new ComboBoxLOVS();
		cmbArmSituacion.setCaption("Situación");
		cmbArmSituacion.setImmediate(false);
		cmbArmSituacion.setWidth("-1px");
		cmbArmSituacion.setHeight("-1px");
		pnlArmasBody4_1.addComponent(cmbArmSituacion);
		
		// cmbArmEstado
		cmbArmEstado = new ComboBoxLOVS();
		cmbArmEstado.setCaption("Estado");
		cmbArmEstado.setImmediate(false);
		cmbArmEstado.setWidth("-1px");
		cmbArmEstado.setHeight("-1px");
		pnlArmasBody4_1.addComponent(cmbArmEstado);
		
		return pnlArmasBody4_1;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlArmasBody5() {
		// common part: create layout
		pnlArmasBody5 = new HorizontalLayout();
		pnlArmasBody5.setImmediate(false);
		pnlArmasBody5.setWidth("-1px");
		pnlArmasBody5.setHeight("-1px");
		pnlArmasBody5.setMargin(false);
		
		// txtArmObservacion
		txtArmObservacion = new TextField();
		txtArmObservacion.setCaption("Observación");
		txtArmObservacion.setImmediate(false);
		txtArmObservacion.setWidth("900px");
		txtArmObservacion.setHeight("100px");
		txtArmObservacion.setInputPrompt("Obsevaciones");
		pnlArmasBody5.addComponent(txtArmObservacion);
		
		return pnlArmasBody5;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlArmasBody6() {
		// common part: create layout
		pnlArmasBody6 = new HorizontalLayout();
		pnlArmasBody6.setImmediate(false);
		pnlArmasBody6.setWidth("100.0%");
		pnlArmasBody6.setHeight("-1px");
		pnlArmasBody6.setMargin(false);
		
		// btnRegistrar
		btnRegistrar = new Button();
		btnRegistrar.setCaption("Registrar");
		btnRegistrar.setImmediate(true);
		btnRegistrar.setWidth("-1px");
		btnRegistrar.setHeight("-1px");
		pnlArmasBody6.addComponent(btnRegistrar);
		pnlArmasBody6.setComponentAlignment(btnRegistrar, new Alignment(24));
		
		return pnlArmasBody6;
	}

}
